perm filename APP6[AIM,DBL]1 blob sn#124704 filedate 1974-10-17 generic text, type T, neo UTF8
00100	.DEVICE XGP
00200	.FONT 1 "FIX25"
00300	.FONT 2 "SIGN57"
00400	.FONT 3 "SHD40"
00500	.FONT 4 "BDI25"
00600	.FONT 5 "NGB30"
00700	.FONT 6 "NGR20"
00800	.PAGE FRAME 53 HIGH 75 WIDE
00900	.TURN ON "↓_π{"
01000	.TURN ON "\" FOR "%"
01100	.MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200	.MACRO E ⊂ APART END ⊃
01300	.TABBREAK
01400	.EVERY FOOTING(\6Fourth Draft .... {DATE},page A6.{IF PAGE = 1 THEN 1 ELSE PAGE},User/CF Dialogue excerpts\*)
01500	.EVERY HEADING(\3BEINGS\*,,\4Doug Lenat\*)
01600	.COUNT PAGE PRINTING "1"
01700	.NEXT PAGE
01800	
     

00100	\2APPENDIX 6. \* \3CF .... RUNNING\*
00200	.GROUP SKIP 10
00300	.NOFILL
00400	←\4ENTER(T)\*
00500	
00600	USER INTERRUPT LEVEL... \40\*
00700	
00800	
00900	\5PUP:\* (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)
01000	
01100	
01200	\5PUP:\* (THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
01300	CLASSIFICATORY:CONCEPT:FORMATION)
01400	
01500	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
01600	\4(ARCH (A B C) (S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))\*
01700	
01800	ARCH
01900	OBJECTS (A B C)
02000	MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02100	
02200	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02300	\4(TOWER (A B C D) (S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))\*
02400	
02500	ARCH
02600	OBJECTS (A B C)
02700	MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02800	
02900	TOWER
03000	OBJECTS (A B C D)
03100	MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
03200	
03300	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
03400	\4(??? (A B C) (S A B) (S C B))\*
03500	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
03600	     ARCH))
03700	
03800	PLEASE GIVE ME NAME:OF:CLASS
03900	\4ARCH\*
04000	
04100	ARCH
04200	OBJECTS (A B C)
04300	MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
04400	
04500	TOWER
04600	OBJECTS (A B C D)
04700	MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
04800	
04900	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
05000	\4(??? (A B C) (S A B) (S C B) (BLOCK A) (BLOCK C) (TOUCH A C) (BLOCK B)
05100	    )\*
05200	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
05300	     ARCH))
05400	
05500	PLEASE GIVE ME NAME:OF:CLASS
05600	\4NOTHING\*
05700	
05800	ARCH
05900	OBJECTS (A B C)
06000	MUSNT HAVE ((TOUCH A C))
06100	MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
06200	
06300	TOWER
06400	OBJECTS (A B C D)
06500	MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
06600	
06700	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
06800	\4(??? (A B C) (BLOCK A) (BLOCK B) (BLOCK C))\*
06900	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
07000	     ARCH))
07100	
07200	PLEASE GIVE ME NAME:OF:CLASS
07300	\4NOTHING\*
07400	
07500	ARCH
07600	OBJECTS (A B C)
07700	MUST HAVE ((S A B))
07800	MUSNT HAVE ((TOUCH A C))
07900	MAY HAVE ((S C B) (BLOCK A) (BLOCK B) (BLOCK C))
08000	
08100	TOWER
08200	OBJECTS (A B C D)
08300	MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
08400	
08500	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
08600	\4(??? (A B C) (BLOCK A) (BLOCK C) (S A B) (BLOCK B))\*
08700	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
08800	     ARCH))
08900	
09000	PLEASE GIVE ME NAME:OF:CLASS
09100	\4NOTHING\*
09200	
09300	ARCH
09400	OBJECTS (A B C)
09500	MUST HAVE ((S A B) (S C B))
09600	MUSNT HAVE ((TOUCH A C))
09700	MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
09800	
09900	TOWER
10000	OBJECTS (A B C D)
10100	MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
10200	
10300	\5<notice that at this point, the model for ARCH is the usual one>\*
10400	
10500	
10600	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
10700	\4(??? (A B C) (TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))\*
10800	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
10900	     TOWER))
11000	
11100	PLEASE GIVE ME NAME:OF:CLASS
11200	\4ROW\*
11300	
11400	ARCH
11500	OBJECTS (A B C)
11600	MUST HAVE ((S A B) (S C B))
11700	MUSNT HAVE ((TOUCH A C))
11800	MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
11900	
12000	TOWER
12100	OBJECTS (A B C D)
12200	MUST HAVE ((S A B))
12300	MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
12400	
12500	ROW
12600	OBJECTS (A B C)
12700	MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
12800	
12900	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
13000	\4(ARCH (A B C D) (S A B) (TOUCH A C))\*
13100	
13200	ARCH
13300	OBJECTS (A B C (D))
13400	MUST HAVE ((S A B))
13500	MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
13600	
13700	TOWER
13800	OBJECTS (A B C D)
13900	MUST HAVE ((S A B))
14000	MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
14100	
14200	ROW
14300	OBJECTS (A B C)
14400	MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
14500	
14600	\5<notice how contradictory user input is handled: features are simply
14700	    transferred from the MUST/MUSTNOT sets to the MAY set>\*
14800	
14900	
15000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
15100	\4(HALT)\*
15200	
15300	\5PUP:\* (PUP HAS THOUGHT ABOUT THE CLASSIFICATORY:CONCEPT:FORMATION TYPE OF
15400	     CONCEPT:FORMATION)
15500	
15600	
15700	
15800	
15900	FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
16000	
16100	1   EXIT FROM SYSTEM
16200	2   CONTINUE SERVING, AS BEFORE
16300	3   CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
16400	4   REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
16500	
16600	OK, GO .......... \43\*
16700	
16800	USER INTERRUPT LEVEL... \410\*
16900	
17000	INTERRUPT? \4YES
17100	\*REQUEST: \4CH
17200	\*NIL *** SATISFY *** (CF:1)
17300	REQUEST: \4WHAT
17400	\*(FAST:SATISFY THE SIMPLE SUBGOAL (AWARE USER (PUP IS ABOUT TO WORK ON 
17500	   -CONCEPT FORMATION)))
17600	REQUEST: \4HOW
17700	\*(PASS CONTROL TO THE SIMPLEST SUFFICIENT BEING)
17800	REQUEST: \4WHY
17900	\*((AWARE USER (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)) IS A REQUISI
18000	   -TE TO BE SATISFIED)
18100	REQUEST: \4OLDER
18200	\*CF:1
18300	REQUEST: \4WHAT
18400	\*(A SPECIALIZED BEING WHICH DOES (LEARN HOW TO IMPOSE A CONCEPT STRUCTU
18500	   -RING UPON A DOMAIN; LEARN HOW TO CHARACTERIZE,
18600	OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
18700	REQUEST: \4WHY
18800	\*(CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE AND CONCEPT:FORMAT
18900	   -ION IS TOO GENERAL TO USE AS IT IS)
19000	REQUEST: \4QUIT
19100	\*INTERRUPT? \4NO
19200	\*INTERRUPT? \4YES
19300	\*REQUEST: \4BEING
19400	\*PAD:2
19500	REQUEST: \4WHAT
19600	\*(A SPECIALIZED BEING WHICH DOES (DIVIDE A DOMAIN INTO SUBDOMAINS; USUA
19700	   -LLY THESE WILL BE DISJOINT, AND THEIR UNION
19800	WILL BE THE ENTIRE DOMAIN))
19900	REQUEST: \4WHY
20000	\*(BECAUSE PUP MUST ENCODE A FUNCTION WHICH PARTITIONS A DOMAIN INTO CLA
20100	   -SSES AND PARTITION:A:DOMAIN IS TOO GENERAL
20200	TO USE AS IT IS)
20300	REQUEST: \4HOW
20400	\*(BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF
20500	     THE PARTITION ONE PAIR AT A TIME; HERE A
20600	PAIR IS <ELEMENT, CLASS:NAME>)
20700	REQUEST: \4QUIT
20800	\*INTERRUPT? \4YES
20900	\*REQUEST: \4CH
21000	\*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
21100	REQUEST: \4WHY
21200	\*(PUP WANTS ELEMENT:4 ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT 
21300	   -AND TAKE:HOLD:OF IS TOO GENERAL TO USE AS
21400	IT IS)
21500	REQUEST: \4HOW
21600	\*(LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER T
21700	   -O GIVE ELEMENT:4 TO US)
21800	REQUEST: \4AFFECTS
21900	\*((IN POSSIBLE CALLED) (ELEMENT:4 POSSIBLE CALLED) (ELEMENT:4 POSSIBLE 
22000	   -CALLED) (ELEMENT:OBJECTS:11 POSSIBLE CALLED)
22100	(ELEMENT:CLASSNAME:13 POSSIBLE CALLED) (ELEMENT:RELNS:15 POSSIBLE CALLED
22200	    ))
22300	REQUEST: \4QUIT
22400	
22500	
22600	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
22700	\4(??? (A B) (BLOCK A]\*
22800	
22900	INTERRUPT? \4NO
23000	\*INTERRUPT? \4YES
23100	\*REQUEST: \4CH
23200	\*NIL *** SOME:PART:OF:14 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
23300	REQUEST: \4WHAT
23400	\*(A SPECIALIZED BEING WHICH DOES (THIS IS A DESTRUCTIVE FUNCTION; IT BR
23500	   -EAKS A PIECE OFF OF (??? (A B) (BLOCK A))))
23600	REQUEST: \4HOW
23700	\*(USE SOME PRE:EXISTING TECHNIQUE TO GET THE SIMPLE LISP PROGRAM (MADE 
23800	   -UP OF CARS AND CDRS) WHICH DOES THE JOB. SUCH
23900	FACILITIES MIGHT BE PW1, PUP, DAVID SHAW'S PGM, OR EVEN TRIAL AND ERROR.
24000	    )
24100	REQUEST: \4WHY
24200	\*(ONLY PART OF (??? (A B) (BLOCK A)) IS DESIRED AT THIS POINT AND SOME:
24300	   -PART:OF IS TOO GENERAL TO USE AS IT IS)
24400	REQUEST: \4META:CODE
24500	\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
24600	     EVAL ARG1)) (CAR ARG1))
24700	REQUEST: \4QUIT
24800	\*INTERRUPT? \4NO
24900	\*INTERRUPT? \4NO
25000	\*INTERRUPT? \4NO
25100	\*INTERRUPT? \4YES
25200	\*REQUEST: \4CH
25300	\*NIL *** FOREACH:17 *** (GET:HOLD:OF:8 PAD:2 CF:1)
25400	REQUEST: \4WHAT
25500	\*(A SPECIALIZED BEING WHICH DOES (GO THROUGH THE KNOWN SPACE OF POSSIBL
25600	   -E:NAMES:OF:CLASS ,WHICH IS 
25700	SET:OF:POSSIBLE:NAMES:OF:CLASS ,AND PERFORM (TEST:18 POSSIBLE:NAME:OF:CL
25800	   -ASS (COMMENT FOR SATISFACTION OF GOAL CRITERIA))
25900	ON EACH, UNTIL SOME SPECIFIED TERMINATION CONDITION IS REACHED))
26000	REQUEST: \4QUIT
26100	\*INTERRUPT? \4YES
26200	\*REQUEST: \4BEING
26300	\*TEST:18
26400	REQUEST: \4WHAT
26500	\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ARCH MEETS TH
26600	   -E DESIRED CONDITIONS (COMMENT FOR SATISFACTION
26700	OF GOAL CRITERIA)))
26800	REQUEST: \4QUIT
26900	\*INTERRUPT? \4NO
27000	\*INTERRUPT? \4NO
27100	\*INTERRUPT? \4NO
27200	\*INTERRUPT? \4YES
27300	\*REQUEST: \4CH
27400	\*NIL *** COMPARE:26 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PA
27500	   -D:2 CF:1)
27600	REQUEST: \4WHAT
27700	\*(A SPECIALIZED BEING WHICH DOES (COMPARE ((S A B) (BLOCK A) (BLOCK B) 
27800	    (BLOCK C) (TOUCH A C) (S C B)) WITH ((BLOCK
27900	A))))
28000	REQUEST: \4WHY
28100	\*(PUP WANTS TO SEE IF ((S A B) (BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C
28200	    ) (S C B)) IS CLOSE ENOUGH TO ((BLOCK A))
28300	AND COMPARE IS TOO GENERAL TO USE AS IT IS)
28400	REQUEST: \4QUIT
28500	\*INTERRUPT? \4YES
28600	\*REQUEST: \4CH
28700	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
28800	   -ET:HOLD:OF:8 PAD:2 CF:1)
28900	REQUEST: \4WHAT
29000	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (S A B) IS IN CONTRADICTION TO
29100	     THE COLLECTION ((BLOCK A))))
29200	REQUEST: \4HOW
29300	\*(SEE HOW A (S A B) TYPE OF ARG1 CAN BE CONTRADICTORY, THEN EXAMINE THE
29400	     RELATIONSHIP BETWEEN (S A B) AND ((BLOCK
29500	A)))
29600	REQUEST: \4QUIT
29700	\*INTERRUPT? \4YES
29800	\*REQUEST: \4CH
29900	\*NIL *** JOIN:23 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PAD:2
30000	     CF:1)
30100	REQUEST: \4QUIT
30200	\*INTERRUPT? \4YES
30300	\*REQUEST: \4CH
30400	\*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
30500	REQUEST: \4QUIT
30600	\*INTERRUPT? \4NO
30700	\*INTERRUPT? \4NO
30800	\*INTERRUPT? \4NO
30900	\*INTERRUPT? \4NO
31000	\*INTERRUPT? \4YES
31100	\*REQUEST: \4CH
31200	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
31300	   -ET:HOLD:OF:8 PAD:2 CF:1)
31400	REQUEST: \4META:CODE
31500	\*(PROGN 
31600	   (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS RELATION)
31700	   (COMMENT IN ALL CALLS TO DATE, ARG2 IS 
31800	          INSTANTIATED AS ELEMENT:RELNS:15) 
31900	   (COND ((MEMBER ARG1 YES:RELNS:28)
32000	          (PROGN (COMMENT ARG1 OCCURS WITH PROBABILITY 1, SO IT HAD
32100	                     BETTER BE IN ARG2, THE RELEVANT PIECE OF THE WORLD)
32200	                 (NOT (MEMBER ARG1 ARG2)))) 
32300	         ((MEMBER ARG1 NO:RELNS:29)
32400	          (PROGN (COMMENT SINCE ARG1 SHOULD NEVER OCCUR, WE HAVE A CO
32500	                   -NTRADICTION IF IT IS A MEMBER OF ARG2)         
32600	          (MEMBER ARG1 ARG2))) 
32700	         (T (PROGN (COMMENT WE MAY OR MAY NOT HAVE ARG1 IN ARG2; EIT
32800	                       -HER CASE IS ALLOWABLE; SO WE NEVER HAVE A
32900	                       CONTRADICTION) 
33000	                    NIL))))
33100	REQUEST: \4QUIT
33200	\*INTERRUPT? \4NO
33300	\*INTERRUPT? \4YES
33400	\*REQUEST: \4CH
33500	\*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
33600	REQUEST: \4WHAT
33700	\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ROW MEETS THE
33800	     DESIRED CONDITIONS (COMMENT FOR SATISFACTION
33900	OF GOAL CRITERIA)))
34000	REQUEST: \4QUIT
34100	\*INTERRUPT? \4NO
34200	\*INTERRUPT? \4NO
34300	\*INTERRUPT? \4NO
34400	\*INTERRUPT? \4NO
34500	\*INTERRUPT? \4NO
34600	\*INTERRUPT? \4YES
34700	\*REQUEST: \4CH
34800	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
34900	   -ET:HOLD:OF:8 PAD:2 CF:1)
35000	REQUEST: \4QUIT
35100	\*INTERRUPT? \4YES
35200	\*REQUEST: \4CH
35300	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
35400	   -ET:HOLD:OF:8 PAD:2 CF:1)
35500	REQUEST: \4WHAT
35600	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (BLOCK A) IS IN CONTRADICTION 
35700	   -TO THE COLLECTION ((BLOCK A))))
35800	REQUEST: \4QUIT
35900	\*INTERRUPT? \4YES
36000	\*REQUEST: \4CH
36100	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
36200	   -ET:HOLD:OF:8 PAD:2 CF:1)
36300	REQUEST: \4WHAT
36400	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (RED B) IS IN CONTRADICTION TO
36500	     THE COLLECTION ((BLOCK A))))
36600	REQUEST: \4QUIT
36700	\*INTERRUPT? \4NO
36800	
36900	
37000	\*(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS 
37100	   -IS ROW))
37200	
37300	INTERRUPT? \4YES
37400	\*REQUEST: \4CH
37500	\*NIL *** ASK:USER:ABOUT:60 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
37600	REQUEST: \4WHAT
37700	\*(A SPECIALIZED BEING WHICH DOES (ASK THE USER TO RESOLVE DECISION NAME
37800	    :OF:CLASS))
37900	REQUEST: \4WHY
38000	\*(BECAUSE PUP CANNOT RESOLVE IT, BUT MUST AT THIS TIME AND ASK:USER:ABO
38100	   -UT IS TOO GENERAL TO USE AS IT IS)
38200	REQUEST: \4HOW
38300	\*(ASK THE USER WHAT THE RESOLUTION IS)
38400	REQUEST: \4META:CODE
38500	\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
38600	     QUOTE NAME:OF:CLASS)) (PROGN (PUPRIN1 
38700	"
38800	PLEASE GIVE ME ") (PUPRINT ARG1) (SET ARG1 (READ))))
38900	REQUEST: \4QUIT
39000	\*
39100	
39200	
39300	PLEASE GIVE ME NAME:OF:CLASS
39400	\4NOTHING\*
39500	
39600	INTERRUPT? \4YES
39700	\*REQUEST: \4CH
39800	\*NIL *** MODIFY:STRUCTURE:9 *** (PAD:2 CF:1)
39900	REQUEST: \4WHAT
40000	\*(A SPECIALIZED BEING WHICH DOES (MODIFY THE STRUCTURE CONTAINING 
40100	    "NOTHING" AS AN ELEMENT))
40200	REQUEST: \4QUIT
40300	\*INTERRUPT? \4YES
40400	\*REQUEST: \4BEING
40500	\*CONDITIONAL:INSERTION:44
40600	REQUEST: \4QUIT
40700	\*INTERRUPT? \4NO
40800	\*INTERRUPT? \4NO
40900	\*INTERRUPT? \4YES
41000	\*REQUEST: \4CH
41100	\*NIL *** COMPLEX:ALTERATION:46 *** (COMPLEX:ALTERATION:45 MODIFY:STRUCT
41200	   -URE:9 PAD:2 CF:1)
41300	REQUEST: \4WHAT
41400	\*(A SPECIALIZED BEING WHICH DOES (ALTER ROW AND/OR ANOTHER ELEMENT OF T
41500	   -HE SAME OUTER LIST))
41600	REQUEST: \4WHY
41700	\*(BECAUSE MODIFYING THE STRUCTURE OF AN INDIVIDUAL ELEMENT IS EQUIVALEN
41800	   -T TO UPDATING OUR DESCRIPTION OF A SINGLE
41900	PARTICULAR CONCEPT, AND THIS IS FUNDAMENTAL TO A DECENT CONCEPT FORMATIO
42000	   -N PROGRAM AND COMPLEX:ALTERATION IS TOO GENERAL
42100	TO USE AS IT IS)
42200	REQUEST: \4HOW
42300	\*(BY MODIFYING THE STRUCTURE OF SUCH AN ELEMENT)
42400	REQUEST: \4OLDER
42500	\*COMPLEX:ALTERATION:45
42600	REQUEST: \4CH
42700	\*(COMPLEX:ALTERATION:46) *** COMPLEX:ALTERATION:45 *** (MODIFY:STRUCTUR
42800	   -E:9 PAD:2 CF:1)
42900	REQUEST: \4QUIT
43000	\*INTERRUPT? \4NO
43100	\*INTERRUPT? \4NO
43200	\*INTERRUPT? \4NO
43300	\*INTERRUPT? \4YES
43400	\*REQUEST: \4CH
43500	\*NIL *** IS:OF:TYPE:61 *** (PAD:2 CF:1)
43600	REQUEST: \4WHAT
43700	\*(A SPECIALIZED BEING WHICH DOES (SEE IF ARG IS OF THE TYPE SPECIFIED. 
43800	   -THE PARTICULAR TYPE IS DELINEATED BY THE SPECIAL
43900	KNOWLEDGE (COMMENT BREAKAWAY)))
44000	REQUEST: \4META:CODE
44100	\*(EQUAL NAME:OF:CLASS HALT)
44200	REQUEST: \4QUIT
44300	\*INTERRUPT? \4YES
44400	\*REQUEST: \4CH
44500	\*NIL *** FOREACH *** (PAD:2 CF:1)
44600	REQUEST: \4WHAT
44700	\*(GO THROUGH THE KNOWN SPACE OF NAMES ,WHICH IS SET:OF:POSSIBLE:NAMES:O
44800	   -F:CLASS ,AND PERFORM (PROGN (PUPRINT NAME)
44900	(COND ((GETP NAME CLASS:OBJECTS:33) (PUPRIN1 "OBJECTS ") (PUPRINT (GETP 
45000	   -NAME CLASS:OBJECTS:33)))) (COND ((GETP NAME
45100	CLASS:YES:RELNS:35) (PUPRIN1 "MUST HAVE ") (PUPRINT (GETP NAME CLASS:YES
45200	    :RELNS:35)))) (COND ((GETP NAME 
45300	CLASS:NO:RELNS:36) (PUPRIN1 "MUSNT HAVE ") (PUPRINT (GETP NAME CLASS:NO:
45400	   -RELNS:36)))) (COND ((GETP NAME 
45500	CLASS:MAYBE:RELNS:37) (PUPRIN1 "MAY HAVE ") (PUPRINT (GETP NAME CLASS:MA
45600	   -YBE:RELNS:37)))) (TERPRI) T) ON EACH, UNTIL
45700	SOME SPECIFIED TERMINATION CONDITION IS REACHED)
45800	REQUEST: \4QUIT
45900	\*
46000	ARCH
46100	OBJECTS (A B C (D))
46200	MUST HAVE ((S A B))
46300	MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
46400	
46500	TOWER
46600	OBJECTS (A B C D)
46700	MUST HAVE ((S A B))
46800	MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
46900	
47000	ROW
47100	OBJECTS (A B C)
47200	MUST HAVE ((TOUCH A C))
47300	MAY HAVE ((TOUCH B C) (BLOCK A) (RED B))
47400	
47500	INTERRUPT? \4YES
47600	\*REQUEST: \4SET:OF:POSSIBLE:NAMES:OF:CLASS
47700	\*(ARCH TOWER ROW)
47800	REQUEST: \4CH
47900	\*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
48000	REQUEST: \4WHAT
48100	\*(A SPECIALIZED BEING WHICH DOES (TAKE THE ARG1 ELEMENT:4 IN A TRIVIAL 
48200	   -WAY; EITHER BY ACCESSING IT OR BY READING
48300	IT IN))
48400	REQUEST: \4QUIT
48500	
48600	
48700	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
48800	\4(??? (A B C) (BLOCK A) (BLOCK B]\*
48900	
49000	INTERRUPT? \4YES
49100	\*REQUEST: \4ELEMENT:4
49200	\*(??? (A B C) (BLOCK A) (BLOCK B))
49300	REQUEST: \4CH
49400	\*NIL *** SOME:PART:OF:12 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
49500	REQUEST: \4QUIT
49600	\*INTERRUPT? \4NO
49700	\*INTERRUPT? \4NO
49800	\*INTERRUPT? \4NO
49900	\*INTERRUPT? \4NO
50000	\*INTERRUPT? \4NO
50100	\*INTERRUPT? \4NO
50200	\*INTERRUPT? \4NO
50300	\*INTERRUPT? \4NO
50400	\*INTERRUPT? \4NO
50500	\*INTERRUPT? \4NO
50600	 .
50700	 .
50800	 .
50900	\*INTERRUPT? \4NO
51000	\*INTERRUPT? \4NO
51100	\*INTERRUPT? \4NO
51200	\*
51300	
51400	
51500	(COMMENT I MUST TELL YOU (COMMENT I GIVE UP))
51600	
51700	 .
51800	 .
51900	 .
52000	
52100	REQUEST: \4CH
52200	\*NIL *** SIMPLE:COMPARE:FN:43 *** (BETTER:38 CONDITIONAL:INSERTION:55 M
52300	   -ODIFY:STRUCTURE:42 COMPLEX:ALTERATION:45 
52400	MODIFY:STRUCTURE:9 PAD:2 CF:1)
52500	REQUEST: \4WHAT
52600	\*(A SPECIALIZED BEING WHICH DOES (QUASI-COMPARISON WHICH ALWAYS RETURNS
52700	     A CONSTANT VALUE))
52800	REQUEST: \4WHY
52900	\*(BECAUSE ORDERING ISNT VERY IMPORTANT HERE AND SIMPLE:COMPARE:FN IS TO
53000	   -O GENERAL TO USE AS IT IS)
53100	REQUEST: \4QUIT
53200	\*INTERRUPT? \4YYES
53300	\*
53400	NO, NO.  TYPE  YES   OR    NO   ......... INTERRUPT? \4YES
53500	\*REQUEST: \4CH
53600	\*NIL *** BETTER:38 *** (CONDITIONAL:INSERTION:55 MODIFY:STRUCTURE:42 CO
53700	   -MPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
53800	CF:1)
53900	REQUEST: \4EXPLICIT:ARGS
54000	\*(B1 B2)
54100	REQUEST: \4B1
54200	\*(S A B)
54300	REQUEST: \4B2
54400	\*(S C D)
54500	REQUEST: \4OLDER
54600	\*CONDITIONAL:INSERTION:55
54700	REQUEST: \4CH
54800	\*(BETTER:38) *** CONDITIONAL:INSERTION:55 *** (MODIFY:STRUCTURE:42 COMP
54900	   -LEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
55000	CF:1)
55100	REQUEST: \4WHAT
55200	\*(A SPECIALIZED BEING WHICH DOES (PERHAPS WE WILL STICK IN A CONDITIONA
55300	   -L INSERTION STATEMENT, STICKING IN AN ((S
55400	B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C)) -TYPE ELEMENT INTO ITS PAREN
55500	   -T STRUCTURE))
55600	REQUEST: \4META:CODE
55700	\*(PROGN 
55800	   (SETQ RESULT:7 (LIST:JOIN RESULT:5 RESULT:6 
55900	                            (SETDIFFERENCE ELEMENT:RELNS:15
56000	                                     (APPEND (GETP NAME:OF:CLASS 
56100	                                                   CLASS:YES:RELNS:35) 
56200	                                             (GETP NAME:OF:CLASS 
56300							   CLASS:NO:RELNS:36) 
56400						     (GETP NAME:OF:CLASS
56500	           					   CLASS:MAYBE:RELNS:37))
56600		))) 
56700	   NIL 
56800	   (COND
56900	     (RESULT:7 
57000	      (PUT NAME:OF:CLASS CLASS:MAYBE:RELNS:37 (MERGE:IN RESULT:7 (GE
57100	                -TP NAME:OF:CLASS CLASS:MAYBE:RELNS:37) BETTER:38)))
57200	     (T (SETQ RESULT:7 NIL))))
57300	REQUEST: \4RESULT:7
57400	\*((S A B))
57500	REQUEST: \4RESULT:6
57600	\*NIL
57700	REQUEST: \4RESULT:5
57800	\*((S A B))
57900	REQUEST: \4(GETP NAME:OF:CLASS CLASS:MAYBE:RELNS:37]
58000	\*((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
58100	REQUEST: \4QUIT
58200	 .
58300	 .
58400	 .
58500	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
58600	\4(HALT)\*
58700	
58800	
58900	
59000	FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
59100	
59200	1   EXIT FROM SYSTEM
59300	2   CONTINUE SERVING, AS BEFORE
59400	3   CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
59500	4   REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
59600	
59700	OK, GO .......... \41\*
59800	"EXITING SYSTEM"
59900	
60000	\5<end of session with the synthesized program>\*
60100	
60200	←\4SET:OF:POSSIBLE:NAMES:OF:CLASS\*
60300	(ARCH TOWER ROW HALT)
60400	
60500	←\4CDR(ARCH)\*
60600	(CLASS:OBJECTS:33 (A B C (D))    CLASS:CLASSNAME:34 ARCH
60700	 CLASS:YES:RELNS:35 ((S A B))    CLASS:NO:RELNS:36 NIL 
60800	 CLASS:MAYBE:RELNS:37 ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
60900	    )